import { ref } from 'vue'
import app from '@/app'
import store from '@/app/store'
import { user, login, logout, update } from '@/api/manage/user'

// 初始化
const userStore = store()

// 更新
userStore.get = () => {
  return new Promise((resolve, reject) => {
    user().then(res => {
      userStore.setData(res)
      resolve(res)
    }).catch(err => {
      reject(err)
    })
  })
}

// 登陆 
userStore.login = (...arge) => {
  return new Promise((resolve, jeject) => {
    login(...arge).then(res => {
      // 登陆
      app.login(res.token)
      resolve(res)
    }).catch(res => {
      jeject(res)
    })
  })
}

// 退出
userStore.logout = () => {
  return new Promise((resolve, jeject) => {
    logout().then(() => {
      // 退出
      app.logout()
      resolve()
    }).catch(res => {
      jeject(res)
    })
  })
}

// 修改
userStore.update = (data) => {
  return new Promise((resolve, jeject) => {
    update(data).then(res => {
      // 更新
      userStore.get()
      resolve(res)
    }).catch(res => {
      jeject(res)
    })
  })
}

// 看守器
userStore.guard = async(name) => {
  if(!userStore.getData().id) {
    await userStore.get()
  }

  return name ? userStore.getData().plugin.includes(name) : true
}

// 我的产品
userStore.getPermission = () => {
  return app.permission.filter(userStore.getData().permission)
}

// 我的插件
userStore.getPlugin = () => {
  return app.plugin.filter(userStore.getData().plugin)
}

export default userStore